package com.jiunuan.live.common.interfaces.vo;

import lombok.Data;

@Data
public class WebResponseVO {
    private int code;
    private String msg;
    private Object data;

    /**
     * 构建一个表示业务错误的WebResponseVO对象
     * 该方法用于当业务逻辑中发生错误时，返回一个包含错误信息的WebResponseVO对象
     *
     * @param msg 错误信息，用于描述发生的业务错误
     * @return WebResponseVO 包含错误代码501和错误信息msg的对象
     */
    public static WebResponseVO bizError(String msg) {
        WebResponseVO webResponseVO = new WebResponseVO();
        webResponseVO.setCode(501);
        webResponseVO.setMsg(msg);
        return webResponseVO;
    }

    /**
     * 构建一个表示业务错误的WebResponseVO对象
     * 该方法允许指定错误代码和错误信息，为业务逻辑中的错误提供更灵活的处理方式
     *
     * @param code 错误代码，用于精确表示错误的类型
     * @param msg 错误信息，用于描述发生的业务错误
     * @return WebResponseVO 包含指定错误代码和错误信息的对象
     */
    public static WebResponseVO bizError(int code, String msg) {
        WebResponseVO webResponseVO = new WebResponseVO();
        webResponseVO.setCode(code);
        webResponseVO.setMsg(msg);
        return webResponseVO;
    }

    /**
     * 构建一个表示系统错误的WebResponseVO对象
     *
     * @return 包含错误代码500的WebResponseVO对象
     */
    public static WebResponseVO sysError() {
        WebResponseVO webResponseVO = new WebResponseVO();
        webResponseVO.setCode(500);
        return webResponseVO;
    }

    /**
     * 构建一个带有自定义错误消息的系统错误WebResponseVO对象
     *
     * @param msg 自定义的错误消息
     * @return 包含错误代码500和自定义错误消息的WebResponseVO对象
     */
    public static WebResponseVO sysError(String msg) {
        WebResponseVO webResponseVO = new WebResponseVO();
        webResponseVO.setCode(500);
        webResponseVO.setMsg(msg);
        return webResponseVO;
    }

    /**
     * 构建一个表示参数错误的WebResponseVO对象
     *
     * @return 包含错误代码400和默认错误消息"error-param"的WebResponseVO对象
     */
    public static WebResponseVO errorParam() {
        WebResponseVO webResponseVO = new WebResponseVO();
        webResponseVO.setCode(400);
        webResponseVO.setMsg("error-param");
        return webResponseVO;
    }

    /**
     * 构建一个带有自定义错误消息的参数错误WebResponseVO对象
     *
     * @param msg 自定义的错误消息
     * @return 包含错误代码400和自定义错误消息的WebResponseVO对象
     */
    public static WebResponseVO errorParam(String msg) {
        WebResponseVO webResponseVO = new WebResponseVO();
        webResponseVO.setCode(400);
        webResponseVO.setMsg(msg);
        return webResponseVO;
    }

    /**
     * 构建一个表示操作成功的WebResponseVO对象
     *
     * @return 包含成功代码200和默认成功消息"success"的WebResponseVO对象
     */
    public static WebResponseVO success() {
        WebResponseVO webResponseVO = new WebResponseVO();
        webResponseVO.setCode(200);
        webResponseVO.setMsg("success");
        return webResponseVO;
    }

    /**
     * 构建一个带有数据的表示操作成功的WebResponseVO对象
     *
     * @param data 操作成功时返回的数据
     * @return 包含成功代码200、成功消息"success"和返回数据的WebResponseVO对象
     */
    public static WebResponseVO success(Object data) {
        WebResponseVO webResponseVO = new WebResponseVO();
        webResponseVO.setData(data);
        webResponseVO.setCode(200);
        webResponseVO.setMsg("success");
        return webResponseVO;
    }
}
